package com.sumanning.mylibmanger.activity;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import com.sumanning.mylibmanger.R;
import com.sumanning.mylibmanger.utils.DBUtils;

public class MainActivity extends AppCompatActivity {

    private ListView booklist;
    private EditText nameEt;
    private EditText priceEt;
    private Cursor cursor;
    private Context context;
    private Button downPage;// 下一页
    private Button upPage;// 上一页
    private SimpleCursorAdapter adapter;
    //设定页数条件，必须成员变量
    private int i = 0;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

//去标题
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        context = this;
        initViews();// 初始化组件

// 根据游标查询数据，查的是，前十条数据
        cursor = new DBUtils(context).query(0, 10);
// 3. 游标适配器，记住是游标适配器，而不是简单适配器
        adapter = new SimpleCursorAdapter(this, R.layout.item_list, cursor,
                new String[]{DBUtils.ID, DBUtils.NAME, DBUtils.PRICE,
                        DBUtils.ID}, new int[]{R.id.id_tv, R.id.name_tv,
                R.id.price_tv, R.id.delet_tv});
// 设置适配器，展出数据
        booklist.setAdapter(adapter);

// 下一页
        downPage.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
// 获取总页数
                DBUtils db = new DBUtils(context);
                int page = db.pageNum();

                i = i + 1;
// 判断

                if (i > page) {
                    i = page;

                }
// 根据游标查询数据
                cursor = new DBUtils(context).query(i * 10, 10);
                SimpleCursorAdapter adapter = new SimpleCursorAdapter(context,
                        R.layout.item_list, cursor, new String[]{DBUtils.ID,
                        DBUtils.NAME, DBUtils.PRICE,

                        DBUtils.ID}, new int[]{R.id.id_tv,
                        R.id.name_tv, R.id.price_tv, R.id.delet_tv});
                booklist.setAdapter(adapter);

            }

        });

// 上一页
        upPage.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                i = i - 1;
                if (i < 0) {
                    i = 0;
                }
// 根据游标查询数据
                cursor = new DBUtils(context).query(i * 10, 10);
                SimpleCursorAdapter adapter = new SimpleCursorAdapter(context,
                        R.layout.item_list, cursor, new String[]{DBUtils.ID,
                        DBUtils.NAME, DBUtils.PRICE,

                        DBUtils.ID}, new int[]{R.id.id_tv,
                        R.id.name_tv, R.id.price_tv, R.id.delet_tv});
                booklist.setAdapter(adapter);

            }

        });

// 长按删除，监听每一项列表项
        booklist.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view,
                                           int position, long id) {


                DBUtils dbUtils = new DBUtils(context);

// long id表示数据库中的id
                dbUtils.delete((int) id);
// 重新查询
                cursor.requery();
// 更新數據，展示数据
                adapter.notifyDataSetChanged();

                return false;
            }
        });

    }

    /**
     * 初始化组件
     */
    private void initViews() {
        booklist = (ListView) findViewById(R.id.list);
        nameEt = (EditText) findViewById(R.id.name_et);
        priceEt = (EditText) findViewById(R.id.price_et);
        downPage = (Button) findViewById(R.id.downPage);
        upPage = (Button) findViewById(R.id.upPage);
    }

    /**
     * 添加事件
     */
    public void add(View v) {

//获取输入框的值
        String nameValue = nameEt.getText().toString().trim();
        String priceValue = priceEt.getText().toString().trim();
        DBUtils dbUtils = new DBUtils(context);

//创建ContentValues对象，用这个插入数据，和更新数据
        ContentValues values = new ContentValues();
        values.put(dbUtils.NAME, nameValue);
        values.put(dbUtils.PRICE, priceValue);
        dbUtils.save(values);
// 重新查询,显示
        cursor.requery();
// 更新數據
        adapter.notifyDataSetChanged();

//保存之后，输入框为空
        nameEt.setText(null);
        priceEt.setText(null);

    }

    /**
     * 删除事件，
     * <p>
     * 由于列表项的删除图标是没有绑定数据的，所以在列表项设置监听是实现不了效果的，现在我们想的一个办法就是，把控件ImageView变成第一个TextView控件，列表项第一个控件是由Id的，我们可以把id传 给删除控件，前提是，两个控件必须为TextView，方可传id,我们把ImageView改为TextView就完事了，注意要把textViewd的属性设置为android:clickable="true"可点击
     */
    public void delete(View v) {
        TextView textView = (TextView) v;

//传id,在游标适配哪里也要设置
        String id = textView.getText().toString();
        DBUtils dbUtils = new DBUtils(context);
// long id表示数据库中的id
        int a = Integer.valueOf(id);
        dbUtils.delete(a);
// 重新查询
        cursor.requery();
// 更新數據
        adapter.notifyDataSetChanged();

    }

}
